package com.cskaoyan.javase.basic._2variable._4detail;

/**
 * 变量使用的细节问题1: 浮点数的精度问题
 * 浮点数之所以存在精度问题,根本原因是因为浮点数自身的尾数有限,有效数字有限
 * 还有一个原因就是二进制小数的原因: 可能存在无限循环的情况.
 * 比如把十进制小数0.1转换成二进制小数:
 * 0.1 * 2 = 0.2 --> 0
 * 0.2 * 2 = 0.4 --> 0
 * 0.4 * 2 = 0.8 --> 0
 * 0.8 * 2 = 1.6 --> 1
 * 0.6 * 2 = 1.2 --> 1
 * 0.2 * 2 = 0.4 --> 0
 * 0.4 * 2 = 0.8 --> 0
 * ....
 *
 * 以上就是二进制无限循环小数
 *
 * @since 16:28
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        double num1 = 1 - 0.9;
        // 比0.1小
        System.out.println(num1);
        float num2 = 1 - 0.9F;
        // 比0.1大
        System.out.println(num2);

        double a = 0.1;
        float b = 0.1F;
        System.out.println(a == b);
    }
}
